
        <html>
			<head>
			     <title>被忽视的开发安全问题 - winsyk</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/4439">http://drops.wooyun.org/papers/4439</a></h1>
				
      <p>
        <h1>0x00 背景</h1>

<hr />

<p>本文是为了揭示那些被忽视的开发安全问题，主要针对基础设施部署环境基础解决方案包括(内部、外部、云环境)。</p>

<h1>0x01 攻击面</h1>

<hr />

<p>github</p>

<p>版本控制工具：</p>

<p>持续集成工具：</p>

<p>aws config files：</p>

<p>客户端配置工具：</p>

<p>elasticsearch:</p>

<p>内存数据库：</p>

<p>版本控制工具：</p>

<!--more-->

<h2>github信息泄漏：</h2>

<hr />

<p>github支持较为较为强大的搜索语法，通过这些搜索语法，通过github可以搜索到一些常规方法无法搜索的内容，如搜索内部项目、密码，ssh私钥等。 Conviso Research and Development Team编写了个较为详细的github语法搜索文章，可以通过http://blog.conviso.com.br/2013/06/github-hacking-for-fun-and-sensitive.html 查阅。 如搜索mysqldump 备份的sql文件，可使用extension:mysqldump sql来搜索。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110055733460ad77c33b-9fed-4362-8652-51a45b2b080d.png" alt="enter image description here" /></p>

<p>另外还可以通过github来查找代码安全问题，如输入规则：extension:php mysql&#95;query $&#95;GET，可以搜索到大量包含mysql&#95;query $&#95;GET的请求，可以有针对性的进行代码审计。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231100449288444fe8bacb-3620-4847-b245-5839898f1104.png" alt="enter image description here" /></p>

<p>git 娱乐：</p>

<p>github 是否能让我们冒充其他用户呢？让我们试下成为linus，通过邮件组收集下大神的邮箱信息。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231100730535005eecba90-71ca-47a5-bf0a-a126b60dcf2d.png" alt="enter image description here" /></p>

<p>通过github 可以搜索到linus的commit记录。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231100815342863c0191c8-a8f0-4fb4-a3c3-6ae0841665df.png" alt="enter image description here" /></p>

<p>结果linus大神的commit记录出现在了我们的repo源。</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311008506002739dabf93-18fb-49c3-87df-37180a34c257.png" alt="enter image description here" /></p>

<p>该问题后的总结，审计谁可以访问到你的repos，启用github双因素认证。</p>

<h2>git配置不当：</h2>

<hr />

<p>如果.git文件夹可以被外网，攻击者可以通过.git下载所有的代码，当前前提是目录可被遍历，如果能遍历可以简单的获取到源代码。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231100952634933b5bd448-2ba6-4b90-99ab-568993a85807.png" alt="enter image description here" /></p>

<p>接着执行。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231101016232445e921221-e391-49c0-a8f0-5405ddccbd91.png" alt="enter image description here" /></p>

<p>通过在google中输入查询语句，*".git" intitle:"Index of”,可以找到几条记录。</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311011095194209ab5c8a-ca97-4761-b5dd-c2f0af19528f.jpg" alt="enter image description here" /></p>

<p>通过Google找到了一台配置错误的机器，看我们可以访问到.git目录</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110130331564e5d7f404-2427-4b8c-a4fe-50e38166ea9f.jpg" alt="enter image description here" /></p>

<p>上边这些代码，都可以被我们下载到。如果目录没有开放遍历，可以检测.git/config</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311048328089852a457f2-a7ff-4e78-b44e-56f1676157211.png" alt="enter image description here" /></p>

<p>使用dvcs-pillage or dvs-ripper 下载源代码，dvcs-pillage 也支持HG和GZR文件格式。 .git 泄漏你可以获取哪些东西呢，包括配置文件，源代码，开发者姓名、公钥、邮箱地址等，repo记录，漏洞漏洞删除的修复记录、密码、私钥等信息，wordpress配置文件，站点数据库备份在.git，会话密钥等。</p>

<h2>svn配置不当：</h2>

<hr />

<p>在svn1.6之前的版本，通过访问.entries，可以下载到svn里的代码，比如案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-067366">WooYun: 乐视某分站源码泄漏</a> </p>

<p>在metasploit里有利用程序，对应的利用模块是：</p>

<p>auxiliary/scanner/http/svn_scanner。</p>

<p>在svn1.7之后的版本，通过访问.svn/wc.db，对应的metasploit模块也是有利用程序的，对应的modules是：</p>

<p>auxiliary/scanner/http/svn&#95;wcdb&#95;scanner。</p>

<h2>gitlist：</h2>

<hr />

<p>通过google 搜索关键字,powered by gitlist，可以看到可以搜索到的记录数为： 897,000 条结果。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231104649782209341c0d3-8dc2-424e-aed5-4d62e16dbaef.jpg" alt="enter image description here" /></p>

<p>在gitlist 4.0及之前版本存在远程代码执行漏洞，漏洞CVE版本号为CVE-2014-4511，该漏洞利用方式为：””<code>whoami</code>，通过执行该命令可以导致gitlist出现知名错误。</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311015116303863584aaa-9e07-4caf-989b-f7684250a829.jpg" alt="enter image description here" /></p>

<p>在2014年6月29号的时候， 该文章对这个远程代码执行漏洞进行了详细讲解并且给出了漏洞利用代码。</p>

<p>博客地址：http://hatriot.github.io/blog/2014/06/29/gitlist-rce/ 通过该利用程序可以将php木马写入到gitlist目录中，从而获取权限服务器</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311016101270977af2249-e050-49d7-825b-a4836a8e32e1.png" alt="enter image description here" /></p>

<p>利用代码：</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231101636602744b40db68-0c63-4911-ac1d-b55bf6733327.png" alt="enter image description here" /></p>

<p>利用方式：</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231101659402915f72954a-4b83-4dda-b1e7-c831e754cc76.png" alt="enter image description here" /></p>

<h2>持续集成工具：</h2>

<p>hudson是jenkins的前身，是基于Java开发的一种持续集成工具，用于监控程序重复的工作，Jenkins是一个开源软件项目，旨在提供一个开放易用的软件平台，使持续集成变成可能。</p>

<p>通过Google Hacking方法，讲hundon输入到shodan中进行搜索，可以发现大量使用hundon的服务器如,hundson搜索结果。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110203245486e655c23d-921e-4da1-ab95-94d893cb4bcc.png" alt="enter image description here" /></p>

<p>jenkins搜索结果。</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311021364339580908249-ecd5-451b-9713-5a524f2a8189.png" alt="enter image description here" /></p>

<p>在Jenkins如果缺少认证，可以访问/view/ALL/newJob来新建一个build然后执行恶意代码如下图：</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110223643300062892c2-3b20-417b-a55e-bede697538a7.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311023133036318f70e7e-0068-4976-b152-b65e5b8e1a4c.png" alt="enter image description here" /></p>

<p>另外也可以使用metasploit来进行渗透测试。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110240876782ca4bc6bf-791a-4ae2-8a72-6369d9f0c4a3.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110245882374b029e8c4-c9e0-4be5-80c9-ceaabdabfe94.png" alt="enter image description here" /></p>

<p>通过metasploit来进行利用，可以获取目标服务器权限。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110254161194bd28653b-8397-4b9d-9926-ecb767e65c69.png" alt="enter image description here" /></p>

<p>参考：https://www.pentestgeek.com/2014/06/13/hacking-jenkins-servers-with-no-password/ 把邪恶的东西放在/vagrant/.git/hooks/post-commit并等待用户提交一些代码，从用户挂载/vagrant目录开始，钩子就一直在运行，即使用户销毁了VM。</p>

<h2>kickstart files:</h2>

<hr />

<p>在kickstart中有3种办法重置用户密码，1、安装过程中 2、在kickstart文件加密的哈希" rootpw --iscrypted" 3、在kickstart文件明文" rootpw --plaintext"</p>

<p>举个例子</p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311026479958121c79830-a825-4ab7-ab8c-0b824b66e9f2.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231102736710658975ce8e-4ed3-43d4-938d-c6c864053885.png" alt="enter image description here" /></p>

<p>aws config files：</p>

<p>AWS 命令行界面 (CLI) 是用于管理 AWS 服务的统一工具。只通过一个工具进行下载和配置，您可以使用命令行控制多个 AWS 服务并利用脚本来自动执行这些服务。</p>

<p>aws使用aws商店以明文存储hiddle申请，这是典型的特权访问。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231102837898223142ddc8-420b-44d2-8a42-f67b526aa296.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231102855379295403ff7c-75aa-4b97-9a79-0ece048ba4cd.png" alt="enter image description here" /></p>

<p>客户端配置工具：</p>

<p>Chef是由Ruby与Erlang写成的配置管理软件，它以一种纯Ruby的领域专用语言（DSL）保存系统配置“食谱（recipes）”或“做饭书（cookbooks）”。</p>

<p>Chef由Opscode公司开发，并在Apache协议版本2.0下开源发布。Chef可在主从式架构之下运行，亦可在名为“chef-solo”的集成配置之下运行。</p>

<p>通过shodanhq来搜索下“chef server" 可以找到较多运行该服务的服务器。</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231102942619546651d473-f668-4c50-bdf1-3c5d93acfc7d.png" alt="enter image description here" /></p>

<p>通过查看chef上可以看到登录的帐号密码，即可完成登录，可以看到较多敏感信息！所以一定要记得修改默认密码。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110301149857553e2585-07e4-47a7-989e-a9958ba7303d.png" alt="enter image description here" /></p>

<p>knife 是一个chef命令行实用工具，可以加密及存储数据包凭证，使用方法例如：</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110311085420dc551b44-8c86-4881-8546-580ea9610660.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231103442539245f4769b8-5e25-40f9-b3f8-07567f0be81b.png" alt="enter image description here" /></p>

<p>chef/knife 加密数据包：</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110325320989a7391e9a-2683-4b6b-965d-73755f8e2bcf.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/201412311032173563704052bf5-c3fe-4cbf-b869-19e660582535.png" alt="enter image description here" /></p>

<p>Vagrant：</p>

<p>你知道如何修改你的ssh keys吗？Vagrant有默认证书，并且sudo不需要密码，可以使用metasploit来扫描默认key，如图：</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231103714738601455b594-f2f9-4727-8b80-c5a4924f05c5.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110381421166e48d10f2-a83b-4357-9626-972dbe2e24c0.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231103845105726dbe8b55-2b54-4c9f-b191-7cea058e9c6c.png" alt="enter image description here" /></p>

<p>elasticsearch：</p>

<p>elasticSearch是一个基于Lucene构建的开源，分布式，RESTful搜索引擎。设计用于云计算中，能够达到实时搜索，稳定，可靠，快速，安装使用方便。</p>

<p>elasticsearch 本身没有访问控制，任何通过http api搜索es中存储的结果，可以用put请求来update存储结果。elasticsearch早与1.2.0版本中存在远程代码执行漏洞，cve版本号为：CVE-2014-3120</p>

<p>elasticsearch启动默认端口为9200,可以看到集群版本信息如图：</p>

<p><img src="http://static.wooyun.org/drops/20141231/20141231103931222148655ff2d-3a0e-44c8-9c2c-7634dda0ebf0.png" alt="enter image description here" /></p>

<p>使用metasploit溢出存在漏洞的集群，成功获取权限。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110405080840bd28653b-8397-4b9d-9926-ecb767e65c691.png" alt="enter image description here" /></p>

<p>内存数据库：</p>

<p>redis是一个key-value存储系统。和Memcached类似，它支持存储的value类型相对更多，包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash（哈希类型）</p>

<p>redis没有加密方式，监听6379 tcp端口，默认redis如果没有指向监听内网地址，而对外开放，外网攻击者可以直接访问该数据库。</p>

<p>通过shodan来搜索redis:6379 关键字，可以获取大量redis信息：</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110420338237169f53ba-c4cc-4dc6-a5a1-23765ee4a7fc.png" alt="enter image description here" /></p>

<p>随机找一条，可以正常登录，redis-cli 可以指向需要连接的redis ip地址。</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110425151259aa35e434-d5ee-40db-9df1-14be49c081dd.png" alt="enter image description here" /></p>

<p>memcache：</p>

<p>memcache 是一种分布式缓存服务器，和通常使用的非分布式的ecache不同，memcache需要独立的服务器支撑，客户端通过配置IP地址和端口号（默认11211）与之连接并使用API进行数据的缓存操作。</p>

<p>memcached未作IP限制导致缓存数据可被攻击者控制，可被攻击者控制，通过连接上后可获取敏感信息，如图：</p>

<p><img src="http://static.wooyun.org/drops/20141231/2014123110433247550fb89841b-75f4-4f19-a047-988c2e811bfa.png" alt="enter image description here" /></p>

<h1>0x03 结语</h1>

<hr />

<p>通过这些案例，让我们知道，其实安全问题不止来源于web问题，安全问题更来自于运维安全，运维和运维安全的好弱是衡量一个公司安全的基础！</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          